Antialiasing in two-dimensional (2D) images consisting of general polygons typically involves calculating the coverage of each pixel affected by a polygon, converting the coverage value to transparency, and blending the fill color to the image using simple alpha blending. The coverage calculation is performed using multiple samples within each pixel or by arithmetic operations. The composition of the final image is based on the painter's algorithm, i.e., polygons are rendered in back to front order.
Although the antialiasing of images rendered this way is suitable for most purposes, undesirable artifacts can occur. A typical effect is “color bleeding”, where the background color or geometry that should be hidden is apparent through a shared edge of two adjacent polygons. Color bleeding occurs because the antialiasing for the edge is calculated separately for each polygon. For example, if the background color is black and a white polygon (polygon 1) covers 50% of a pixel 10 as shown in FIG. 1A, the color for the pixel 10 is 50% gray (where 100% gray constitutes pure black). If an adjacent white polygon (polygon 2) is added and covers the remainder of the pixel 10 as shown in FIG. 1B, the resulting color is 75% gray instead of the correct color for the pixel 10 which is white. In this example, the coverage calculations are correct; the artifact results from the composition algorithm.
The undesirable effect is avoided when creating the content by layering the shapes on top of each other instead of making the shapes adjacent. This can lead to a large amount of overdraw, requiring significant memory bandwidth. For instance, free-form gradients are often created in content tools by creating a blend between two shapes. In some instances employing the layering technique, a large number of layers are rendered on top of each other with only the nearest of the layers being visible.
Other techniques are used to avoid the occurrence of artifacts. One technique is based on the use of compound shapes. A compound shape is a collection of polygon edges that defines a set of adjacent polygons. A compound shape rasterizer evaluates the total coverage and color of all polygons for each pixel; however, this method cannot be generally applied due the limitations defined for the compound shapes, and specifically prepared data is required where overlap is removed to produce practical results. Moreover, hardware implementation of a compound shape rasterizer is not practical and a temporary buffer for shape composition is required.
Another technique uses three-dimensional (3D) graphics hardware and is based on rendering polygons which are sorted from front to back. Although proper antialiasing is achieved for adjacent polygon edges, artifacts are generated for pixels that have overlapping edges 14A and 14B as shown in FIG. 2 because the coverage value does not include information about the spatial arrangement of the covered areas within the pixel 10 as described in more detail below.